home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)t9.d64 / bam.c (.txt) next >
Commodore BASIC  |  2007-02-04  |  4KB  |  129 lines

  1. 100 REM  BLOCK ALLOCATION MAP
  2. 110 REM  WRITTEN BY TOM CONRAD
  3. 120 REM  ORIGINALLY IN 'COMPUTE'
  4. 130 :
  5. 140 REM  MODIFIED FOR C64
  6. 150 REM  PAUL BLAIR FEBRUARY 1984
  7. 160 :
  8. 170 REM BLOCK ALLOCATION MAP (BAM)
  9. 180 REM ALLOWS YOU TO SEE WHERE YOUR
  10. 190 REM MATERIAL IS STORED ON DISK.
  11. 200 :
  12. 210 REM THE PURPOSE OF THE BAM IS TO
  13. 220 REM TO PROTECT ALLOCATED BLOCKS SO
  14. 230 REM THEY ARE NOT WRITTEN OVER AND
  15. 240 REM THEREFORE DESTROYED. THE MAP
  16. 250 REM RESIDES ON THE DIRECTORY
  17. 260 REM TRACK, (TRACK 18, SECTOR 0).
  18. 270 :
  19. 280 REM THE BAM TURNS OFF THE BITS
  20. 290 REM WHEN IT ALLOCATES A SECTOR.
  21. 300 :
  22. 310 REM THIS PGM LOOKS AT THESE BITS
  23. 320 REM & IF ON (MEANING IT IS FREE)
  24. 330 REM WILL PRINT EITHER A RED OR A
  25. 340 REM GREEN SQUARE. BY LOOKING AT
  26. 350 REM THE MAP YOU CAN DETERMINE HOW
  27. 360 REM FULL OR EMPTY THE DISK IS.
  28. 370 :
  29. 380 REM      INITIALIZATION
  30. 390 :
  31. 400 DIM A(4):PP=53280:POKEPP,12:POKEPP+1,15:NL$=CHR$(0):D$="0":T=0
  32. 410 :
  33. 420 REM  PRINTS THE BAM MAP OUTLINE
  34. 430 :
  35. 440 PRINT"[147]   [149]TRACKS[146]   11111111112222222222333333"
  36. 450 PRINT"   12345678901234567890123456789012345"
  37. 460 PRINT"[175]  [175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175]*[175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175]"
  38. 470 PRINT"S[146]0[167][159]                                   [146][165]"
  39. 480 PRINT"E[146]1[167][159]                                   [146][165]"
  40. 490 PRINT"C[146]2[170][159]                                   [146][180]"
  41. 500 PRINT"T[146]3[170][159]                                   [146][180]"
  42. 510 PRINT"O[146]4[170][159]                                   [146][180]"
  43. 520 PRINT"R[146]5[170][159]                                   [146][180]"
  44. 530 PRINT"S[146]6[170][159]                                   [146][180]"
  45. 540 PRINT" 7[170][159]                                   [146][180]"
  46. 550 PRINT" 8[170][159]                                   [146][180]"
  47. 560 PRINT" 9[170][159]                                   [146][180]"
  48. 570 PRINT"10[170][159]                                   [146][180]"
  49. 580 PRINT"11[170][159]                                   [146][180]"
  50. 590 PRINT"12[170][159]                                   [146][180]"
  51. 600 PRINT"13[170][159]                                   [146][180]"
  52. 610 PRINT"14[170][159]                                   [146][180]"
  53. 620 PRINT"15[170][159]                                   [146][180]"
  54. 630 PRINT"16[170][159]                                   [146][180]"
  55. 640 PRINT"17[170][159]                                   [146][180]"
  56. 650 PRINT"18[170][159]                                   [146][180]"
  57. 660 PRINT"19[170][159]                 [146][207][183][183][183][183][183][183]  [146][144]OR [144][146]=EMPTY"       "
  58. 670 [153]"20+OPEN                 WAITSGN"
  59. 680 [153]"   USRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSR"
  60. 690 S$[178]"":T$[178]""
  61. 700 :
  62. 710 [143]  INIT DRIVE AND CK FOR ERROR
  63. 720 :
  64. 730 [159] 15,8,15,"I"[170]D$:[141] 1260
  65. 740 :
  66. 750 [143]  ALLOC BUFFER 0 TO CHANNEL 2
  67. 760 :
  68. 770 [159] 2,8,2,"#"[170]"0": [141] 1260
  69. 780 :
  70. 790 [143]  BLOCK-READ INTO BUFFER
  71. 800 :
  72. 810 [152]15,"U1:2,"D$,18,0: [141] 1260
  73. 820 :
  74. 830 [143]  SET BUFFER POINTER
  75. 840 :
  76. 850 [152]15,"B-P:2,4"
  77. 860 :
  78. 870 [143]  MEMORY READ
  79. 880 :
  80. 890 [152]15,"M-R"[199](0)[199](17)
  81. 900 :
  82. 910 [143]  SEARCH FOR EMPTY SECTORS
  83. 920 :
  84. 930 [129] I[178]1 [164] 35
  85. 940 :[129] L[178]1 [164] 4
  86. 950 ::[161]#2,A$
  87. 960 ::[139] A$[178]"" [167] A$[178]NL$
  88. 970 ::A(L)[178] [198](A$)
  89. 980 ::[139] L[178]1 [175] I[179][177]18 [167] T[178]T[170]A(1)
  90. 990 :[130] L
  91. 1000 :[129] J[178]2 [164] 4
  92. 1010 ::[153] " ":[139] [181](J[173]2)[178]J[173]2 [167] [153] " "
  93. 1020 ::[139] A(J)[178][198]([199](0))[167][137]1080:[143]  SECT FULL
  94. 1030 ::[129] K[178]7 [164] 0 [169] [171]1
  95. 1040 :::[153] " ":[139] [181](K[173]2)[178]K[173]2 [167] [153] " "
  96. 1050 :::[139] (A(J)[171]2[174]K)[179]0 [137] 1070
  97. 1060 :::A(J)[178]A(J)[171]2[174]K:[141] 1300
  98. 1070 ::[130] K
  99. 1080 :[130] J
  100. 1090 [130] I
  101. 1100 [153]" ":[160]2:[160]15
  102. 1110 :
  103. 1120 [143]  PRINTS TOTAL FREE BLOCKS
  104. 1130 :
  105. 1140 [153] [200](S$,22)[200](T$,23)"STOPFREE BLKS="T"ONONONON"
  106. 1150 [153]""[200](S$,24)[200](T$,4)"STOP'C' TO CONTINUE-'E' TO END";
  107. 1160 :
  108. 1170 [143]  MAP ON SCREEN UNTIL KEY IS HIT
  109. 1180 :
  110. 1190 [161] Z$:[139] Z$[178]"" [137] 1190
  111. 1200 [139]Z$[178]"E"[167][153]"":[128]
  112. 1210 [139]Z$[178]"C"[167][138]
  113. 1220 [137]1190
  114. 1230 :
  115. 1240 [143]  CHECK FOR DISK ERROR
  116. 1250 :
  117. 1260 [132]15,EN$,EM$,ET,ES: [139] EN$[178]"00" [167] [142]
  118. 1270 [153] "DISK ERROR:WAIT " EM$ " " EN$,ET "," ES
  119. 1280 [160]2:[160]15:[128]
  120. 1290 :
  121. 1300 [143]  PRINT ALTERNATING PATTERN
  122. 1310 :
  123. 1320 [139] [181](I[173]2)[178] I[173]2 [175] [181](K[173]2)[178] K[173]2 [167] C$[178]" "
  124. 1330 [139] [181](I[173]2)[179][177]I[173]2 [175] [181](K[173]2)[178] K[173]2 [167] C$[178]" "
  125. 1340 [139] [181](I[173]2)[178] I[173]2 [175] [181](K[173]2)[179][177]K[173]2 [167] C$[178]" "
  126. 1350 [139] [181](I[173]2)[179][177]I[173]2 [175] [181](K[173]2)[179][177]K[173]2 [167] C$[178]" "
  127. 1360 [153] "" [200](S$,3[170]((J[171]2)[172]8)[170]K) [200](T$,2[170]I) C$
  128. 1370 [142]
  129.